
Rom version:
USA, v1.0, Unheadered


http://www.darkwoodinc.com/~enker/banks.php
http://www.darkwoodinc.com/~enker/banks/som10.txt
Basically, that link made everything possible to begin with. Lists almost everything...

https://www.romhacking.net/utilities/989/
That utility is somewhat useful. It lists the enemies and items in the order they are in the rom. As well as the item ids.
It shows the bytes as you're editing it.

https://datacrystal.tcrf.net/wiki/Secret_of_Mana_(SNES)/ROM_map
Apparently shows where the prices are in the rom. Well, the first item, and what the first item is anyways
.... and I can't make it work :(

All my attempts to find the item prices didn't work.
No hints as to where the shop data could be either (despite numerous hacks changing that) :(

There's 2 files for enemy stats, because each enemy is 29 bytes in total.

Spells are actually 64 bytes each. But most of it is supposedly animation data, and the spell data is lumped at the end, so it works.

The weapons section can be further expanded to include all the enemy weapons, it follows on from the player weapons.
Supposedly 118 entries...
Only somewhat documented.

Enemy Drop Table is probably best used alongside the aforementioned SOM Drop Editor.
That utility works on Headered roms (and most som patches work on unheadered roms). Bit of a pain...

Try as I might, the program would not detect the item data, even when I was entering the bytes directly from the rom map.
The program probably found a match for the first stats entered earlier in the rom, and wouldn't go past it...
So I entered the address directly (when I figured it out).

The final item on the Item page is normally a scrapped/dummied item. But some hacks re-purpose it into a new item (like the Faerie Coconut patch).
It can be edited now.




My own tutorial on how I work with these numbers (how it makes sense to me).
Feel free to post it so others can use it :)

------------------

1st byte works in multiples of 1. Maximum of 255, at 255.
2nd byte works in multiples of 256. Maximum of 65280, at 255.

256, 512, 768, 1024, 1280, 1536, 1792, 2048, 2304, 2560 and so on.

3rd and 4th bytes would work in multiples of 4096 and 65536 respectively. If we were working with a 4 byte number (which is rare I'd imagine).
Thankfully, we only work with 1 or 2 byte numbers most of the time, making things easier.

Those are for Little Endian, which the SNES uses. And many other Nintendo systems as well as Playstation.
It reads Right to Left in the rom (probably because the East developed it). And Down to Up in the editor.

For Big Endian (which most Sega systems use, and the N64 oddly enough), the bytes would be flipped.
So Left to Right in the rom, and up to down in the editor.


Some examples.


Mantis Ant.
1st boss in the game. 150 HP.

1st byte: 150
2nd byte: 0

-----------
Spiky Tiger
3rd boss in the game, everyone hates it. 520 HP.

1st byte: 8
2nd byte: 2

8 x 1 = 8
2 x 256 = 512

8 + 512 = 520


-----------
Great Viper
9th/10th boss in the game? Still kinda early.
Don't know what it's HP is off the top of my head, but it's over 1000.

So I'll calculate it.

1st byte: 50
2nd byte: 5

5 x 256 = 1280

50 + 1280 = 1330

--------------------------------
65535
Largest number a 2 byte number can produce.

That would be 255 in both bytes.

--------------------------------

Now here is how I quickly take a chosen number, and turn it into a format that works with the editor.
We'll use a big number like 9999 as an example. Any number upto and including 65535 would work...

9999 / 256 = 39.0585...
Just round down to 39.

39 x 256 = 9984

Enter 39 into the 2nd byte.

9984 is the nearest multiple of 256 that is lower then the target number.

9999 - 9984 = 15

Enter 15 into 1st byte.
DONE! EASY!


For 4 byte numbers, I'm sure it would take more steps. But 2 byte numbers should cover almost every stat you'd ever want to edit anyways...






##########################
